import java.util.Random;
import java.util.Scanner;

public class Test {


    //求二进制中对应的奇偶位
    //求对应位是1还是0符合按位与，与1按位与就可获得
    public static void main(String[] args) {
        int n = 7;
        for (int i = 31; i >= 0; i-=2) {
            System.out.print(((n >>> i) & 1)+" ");
        }
        System.out.println();
        for (int i = 30; i >= 0; i-=2) {
            System.out.print(((n >>> i) & 1)+" ");
        }
    }


    //猜数字游戏
    //Random 生成随机数，需导包，其随机数每次不一样，是根据当前的时间生成随机数
    //若传参数每次则会根据参数生成同一个数：Random random = new Random(123);
    //random.nextInt(100);生成0到100不包括100[0,100)的随机数
    //System.out.println("生成的随机数字："+randomNum);可打印生成的随机数知道答案
    //使用 Scanner 读取字符串/整数/浮点数，要记得调用关闭方法
    public static void main2(String[] args) {
        Random random = new Random();
        int randomNum = random.nextInt(100);
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.print("请输入你要猜的数字：");
            int num = scanner.nextInt();
            if (num > randomNum){
                System.out.println("猜大了！");
            } else if (num == randomNum) {
                System.out.println("猜对了！");
                break;
            }else {
                System.out.println("猜小了");
            }
        }
        scanner.close();
    }


    //求数二进制中有几个1
    //每次与前一个数按位与（&）后少一个1，因此数变为0之前按位与几次
    //求二进制有几个1，可以将2的次方数分别列出来，看哪几个加起来的和等于来判断有几个1
    public static void main1(String[] args) {
        int n = 6;
        int count = 0;
        while (n != 0){
            count++;
            n = n & (n-1);
        }
        System.out.println(count);
    }
}

